The present invention relates to software and hardware data exchange systems, and, more particularly, to exchanging data between a plurality of processors.
Digital signal processing refers to the electronic processing of signals, or any application that involves rapid numeric processing. The software development for applications on digital signal processors is an iterative process. A compiler translates source code into an assembly language source code. An assembler translates the assembly language source code files into machine language object files. Source files may contain instructions, assembly directives, and macro directives. A linker combines the object files into a single executable object module or program. As the linker creates the executable module, it performs symbolic relocation and resolves external references. The linker accepts object files created by the assembler as input. The linker also accepts archive or library members and output modules created previously. The objective of this development process is to produce an executable module that may be stored and executed on a device or processor.
Debugging tools are available to test processors and the linked, executable code. Application software development requires a level of simulation, observability and controllability of the software within the hardware system being developed. Tools for debugging software in a system context include simulators and emulators.
An emulator is a software development tool that allows software under development to be executed, controlled, and viewed in a real hardware environment. An emulator may be hardware, software or both. An emulator allows a user to perform software and hardware development, and to integrate the software and hardware with the target processor.
The most desirable form of emulator allows software development to occur in the real product hardware environment. To allow this form of emulation, the target processor provides an emulation interface that accesses its internal state. An emulation interface provides control and access to every memory location and register of the target processor, and extends the target processor architecture as an attached processor. The emulator can start or stop execution of the target processor program. When the target is stopped, the emulator has the capability to load, inspect, and modify all processor registers. Program data and program memory may be upgraded or downloaded.
In current emulators, when the target processor is running, only a subset of these operations are available. The registers of a running processor are changing too rapidly to make sporadic readouts meaningful. For this reason, a current practice is to:
1. Add additional peripherals to the product hardware to export meaningful diagnostic data.
2. Add additional signals to the product hardware that can be monitored by expensive test equipment, which are usually referred to as logic analyzers.
3. Build interim versions of the product hardware for testing, then switch to the real product and hope the software still works properly.
As more hardware functionality is combined into single-chip products, it becomes increasingly difficult to employ logic analyzer solutions, and increasingly expensive to add temporary diagnostic peripherals.
Traditional emulation provides start and stop control of a target system, and the ability for the user to inspect the stopped system. There is an increasing need to interact with and diagnose the running system. As systems become more complex, it is difficult for a human user to monitor each system, every time it is tested. Testing occurs throughout the development and manufacturing cycle. A means of automating such interactions is desired. Such capability also has value to the product in the field. It allows configuration for a particular use, diagnosis for repair, or accumulation of operating information.
From the foregoing it may be appreciated that a need has arisen for exchanging data between processors while emulating software applications. In accordance with one embodiment of the present invention, a data exchange system and method for processors are provided that substantially eliminates and reduces the disadvantages and problems associated with conventional processors and software development emulation systems.
A data exchange system that exchanges data between processors is provided in accordance with one embodiment. The system includes a host processor and a target processor. Data is exchanged by forming a data pipeline between the target processor and the host processor. The data pipeline includes a data unit on the target processor, an emulator, and a device driver on the host processor. The data exchange system sends data through the data pipeline by transferring the data from a target memory on the target processor with the data unit to the emulator. The data exchange system transfers the data from the emulator to the first device driver. The data may be accessed by a client coupled to the host computer or a server on the host computer. The data exchange system also sends data back through the data pipeline by matching a request from the target processor to data from the host computer.
The present invention in accordance with one embodiment includes Real-Time Data exchange (RTDX(trademark)). RTDX enables data to be transferred between a digital signal processor (xe2x80x9cDSPxe2x80x9d) and a host computer without interfering with the running of the DSP software application. RTDX provides system developers real-time, continuous visibility as the DSP applications execute. Developers are able to monitor the DSP applications as they operate in the real world, and, thus, providing them with a means to monitor or analyze their DSP systems.
According to one embodiment the present invention, the traditional emulation capability is augmented with a real-time data transport mechanism. This mechanism enables emulation to be used with a running target processor to acquire information about the behavior of the real system. It also permits the injection of test controls and data to a running real-time system for purposes of system diagnosis and analysis. The augmented emulation system may perform both traditional and real-time development tasks at without increased cost compared to traditional emulators.
The present invention in accordance with one embodiment includes hardware support built around each processor system so operations may be executed within the processor system while doing analysis as the circuit runs. The present invention permits the software process to be run at full speed and real time as the emulator monitors the target processor. Further, the present invention allows the target processor assists in its own emulation. The hardware that enables enhanced emulation is embedded in the target processor, so that all of the operations of the target processors are monitored directly from the target processor itself. Thus, as processors execute an increasing amount of instructions per second and processor capabilities expand, the present invention allows the capabilities of the real-time, continuous emulation to expand along with the processor. The data rate range may be about 1 megabyte per second to about 2 megabytes per second. Alternatively, the data rate may be about 20 megabytes per second.
The present invention in accordance with one embodiment includes an enhanced emulator that allows a user to define and develop software in the environment of the target processor. The emulator reads inputs from a host PC and produces outputs to the PC as an assistant for the target processor, for the purpose of determining appropriate software and operations signals. The developer may interface additional host PC software to the emulator, to provide control and data signals to the target processor. The developer also may add software to the target processor that interacts with the emulator, for purposes of exchanging control and data information. Ultimately, when the target processors are supplied with the appropriate software resulting from the emulation operations, the target processor operates in the manner that is comparable to the rest of its system
The present invention in accordance with one embodiment forms a data pipe between an application running on a DSP processor and a component object model client running on a host computer, or processor. A user may supply the DSP application and the component object model client. The data pipe consists of various software and hardware components. The data pipe is bi-directional in that data may flow to and from the DSP processor and to and from the host computer. The data pipe also is multiplexed in that data may be tagged as belonging to different virtual channels. The data pipe also is asynchronous in that data may be input into the pipe at any time. The data pipe also is low-intrusive in that data is transferred between the DSP processor and the host processor as background activity.
It is a technical advantage in accordance with one embodiment of the present invention that an enhanced emulation interface is provided that enables real-time exchange of data between a target processor and a development host, while maintaining low-cost control capabilities. It is another technical advantage in accordance with one embodiment of the present invention that a DSP-side programmable interface is provided that may be used by applications developers to exchange control and data information with a host processor via the emulation interface. It is another technical advantage in accordance with one embodiment of the present invention that an emulator is provided that may maintain high data transfer rates through the emulation interface while minimizing the space and speed overheads within the target processor. It is another technical advantage of one embodiment of the present invention that a development host-side programmable interface is provided that may be used by applications developers to exchange control and data information with a target processor via the emulation interface.